The development of new programs for computing devices can be an extensive, time consuming, and tedious process that requires thousands of personnel-hours and thousands of machine-hours. Typically, a program is developed piecemeal by a group of developers. Once the program has been developed, the entire program is submitted to a group of testers for testing. In general, as the size of the programming code increases, so does the personnel-hour and machine-hour requirements for testing. For example, a large program may require over five hundred developers writing upwards of thirty million lines of code. In order to adequately test such a large program, over one thousand testers may be required to write the tens of thousands of tests needed to test that program. Therefore, testing a large program can take over one thousand machine hours to complete.
Through program testing, program developers are often able to identify problems that need correction before a program is released, implemented, or updated. A testing phase often includes testing multiple scenarios referred to as test cases that involve certain lines of the program code. During the development process, the lines of code of a program are often modified. When modifications are made to the program, the entire program is typically re-submitted for testing even if the modification made to the program was very small. This may require all the previously run tests to be executed again, even on portions of the program that have not been changed.
During a typical testing phase, test cases are run and analyzed to identify whether the program code is operating as intended. Though testing program code in this manner is typically effective to test a given program, there exist certain complications. For example, a program testing phase may include thousands of test cases and millions of lines of code. Running and analyzing each test case can take considerable time given the shear volume of test cases and code involved. This type of complication is often compounded as a program development cycle can include multiple program testing phases. In general, a lengthy program testing phase(s) can decrease efficiency, increase costs, and reduces the overall benefit of a program development cycle.